//
//  main.m
//  NSDate
//
//  Created by admin on 2019/8/9.
//  Copyright © 2019 猫爷爷的酱醋茶. All rights reserved.
//

/*
 NSDate 时间处理
    1.得到当前时间
        创建一个NSDate对象，将这个对象的值输出就是当前时间，注意：以前得到的是当前的格林威治时间 - 0时区的时间
 
    2.计算时间
        a）在当前时间的基础之上，新增或者减去指定的时间，得到一个新的时间
            + (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
            新增：传入一个正数
            减去：传入一个负数
 
            时区差，就能得到格林威治时间
            NSDate *date2 = [NSDate dateWithTimeIntervalSinceNow:-8*60*60];
 
        b）计算时间差
            - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate;
 
 */

#import <Foundation/Foundation.h>
#import "NSDate+Year_Moth_Day.h"

//时间格式
void DateFormatter(void);

//时间差 - 应用在判断运行时间
void TimeDifference(void);

//提取日期的各个部分 - 简单版
void ComponentOfTheDate(void);

//提取日期的各个部分 - 复杂版
void ComponentOfTheDate2(void);

//用分类进行对NSDate类进行拓展
void CategoryOfNSDate(void);

int main(int argc, const char * argv[])
{

    
   CategoryOfNSDate();
    
    
    return 0;
}
//用分类进行对NSDate类进行拓展
void CategoryOfNSDate(void)
{
    NSDate *date = [NSDate new];
    
    NSLog(@"现在是%d年%d月%d日",date.year,date.month,date.day);
}


//提取日期的各个部分 - 复杂版
void ComponentOfTheDate2(void)
{
    NSDate *date = [NSDate new];
    //创建一个日历格式对象 - 单例模式的对象
    NSCalendar *calendar = [NSCalendar currentCalendar];
    //指定日历对象取到日期对象的哪些部分
    NSDateComponents *dateCom = [calendar components:NSCalendarUnitWeekday fromDate:date];
    NSLog(@"%lu",dateCom.weekday);
    
    
}

//提取日期的各个部分 - 简单版
void ComponentOfTheDate(void)
{
    
    NSDate *date = [NSDate new];
    //创建一个日期格式对象
    NSDateFormatter *fomatter = [NSDateFormatter new];
    fomatter.dateFormat = @"yyyy";
    NSString *yearStr = [fomatter stringFromDate:date];
    int year = yearStr.intValue;
    NSLog(@"%d",year);
}


//时间差 - 应用在判断运行时间
void TimeDifference(void)
{
    NSString *str = @"";
    NSDate *startTime = [NSDate new];
    for (int i = 0; i < 5000; i++)
    {
        str = [NSString stringWithFormat:@"%@%d",str,i];
    }
    NSDate *endTime = [NSDate new];
    NSLog(@"运行了%.2f秒",[endTime timeIntervalSinceDate:startTime]);
    
    
}


//时间格式
void DateFormatter(void)
{
    
    NSDate *date = [NSDate date];
    NSLog(@"%@",date);
    
    //先创建一个日期格式化对象 这个对象可以将一个日期输出为指定的格式
    NSDateFormatter *formatter = [NSDateFormatter new];
    //HH 代表24小时制 hh代表12小时制
    formatter.dateFormat = @"yyyy年MM月dd日 HH时mm秒ss分";
    //日期转换为字符串
    NSString *dateString = [formatter stringFromDate:date];
    NSLog(@"%@",dateString);
    
    //字符串转换为日期
    //- (nullable NSDate *)dateFromString:(NSString *)string;
}
